[Docker] 도커의 기본 개념

도커(Docker)

도커는 ‘컨테이너화된 애플리케이션’을 만드는 플랫폼입니다.
컨테이너 개념은 배에 실어 나르는 큰 컨테이너 박스들을 생각하면 좋습니다.
각각의 박스에는 다양한 물품들(TV, 냉장고, 소파 등)이 담겨있고 이 컨테이너 박스들은 배에 실을 수 있도록 일정한 형태와 크기로 만들어져 있습니다.
도커도 이와 비슷한 원리로 작동합니다.

도커는 애플리케이션과 그 애플리케이션이 동작하기 위해 필요한 모든 것들 (라이브러리, 종속성 등)을 하나의 ‘박스’로 패키징합니다.
우리는 이 ‘박스’를 컨테이너라고 부르고 ‘컨테이너’는 어떤 환경에서든지 동일하게 동작할 수 있도록 도와줍니다.

도커는 클라이언트-서버 형태의 아키텍처를 사용하는데 사용자(클라이언트)와 서비스 제공자(서버) 간의 상호작용을 가능하게 하는 일반적인 컴퓨팅 모델이라고 보면 됩니다.

도커 서버(Docker Server)

도커 서버는 컨테이너의 생성, 실행, 모니터링 등의 기능을 수행하는 컴포넌트입니다.
이것을 ‘도커 데몬(Docker Daemon)’이라고도 부릅니다.
도커 데몬은 컨테이너를 관리하고 컨테이너와 관련된 다양한 작업을 수행합니다.
예를 들어 컨테이너의 생명주기를 관리하거나, 이미지를 가져오거나, 네트워크를 설정하거나, 볼륨을 붙이는 등의 작업을 합니다.

도커 클라이언트(Docker Client)

도커 클라이언트는 사용자가 도커 데몬과 소통할 수 있도록 도와주는 도구입니다.
사용자는 도커 클라이언트를 통해 컨테이너를 시작하거나 중지하고 새로운 이미지를 만들거나, 컨테이너 상태를 확인하는 등의 작업을 할 수 있습니다.

사용자가 ‘도커 클라이언트’를 통해 도커 이미지를 실행하려는 명령을 입력하면 이 명령은 ‘도커 서버’에게 전달됩니다.
도커 서버는 이 명령을 받아 이미지를 기반으로 새로운 컨테이너를 생성하고 실행합니다.
그리고 실행 상태를 도커 클라이언트에게 알려줍니다. 이런 식으로 도커 클라이언트와 도커 서버는 함께 동작하여 컨테이너화된 애플리케이션의 관리를 용이하게 합니다.

도커 명령어

  • pull: 도커 이미지를 레포지토리로부터 받아옵니다.
      docker pull <저장소명/이미지명:태그>
    
  • push: 로컬의 도커 이미지를 레포지토리에 올립니다.
      docker push <(push 할)저장소명/이미지명:태그> <(dockhub의)저장소명/이미지명:태그>
    
  • commit: 컨테이너의 현재 상태를 새로운 이미지로 저장합니다.
      docker commit <컨테이너이름 or 컨테이너id > <저장할 이미지명>
    
  • run: 이미지로부터 컨테이너를 생성하고 실행합니다. -d 옵션은 컨테이너를 백그라운드에서 실행하라는 의미입니다. -p 옵션은 로컬포트와 도커포트를 연결합니다.
      docker run -d --name <컨테이너 이름> -p <로컬포트:도커포트> <이미지이름 or 이미지id>
    
  • start: 중지된 컨테이너를 다시 시작합니다.
      docker start <컨테이너이름 or 컨테이너id >
    
  • restart: 컨테이너를 재부팅합니다.
      docker restart <컨테이너이름 or 컨테이너id>
    
  • stop: 동작 중인 컨테이너를 중지합니다.
      docker stop <컨테이너이름 or 컨테이너id >
    
  • exec: 동작 중인 컨테이너로 접근합니다. -it 옵션은 대화형 터미널로 접근하라는 의미입니다. bash는 컨테이너 내부에서 실행할 명령어입니다.
      docker exec -it <container_id> bash
    
  • ps: 동작 중인 컨테이너를 확인합니다. -a 옵션은 중지된 컨테이너도 확인하라는 의미입니다.
      docker ps / docker ps –a
    
  • rm: 컨테이너를 삭제합니다.
      docker rm <컨테이너이름 or 컨테이너id >
    
  • images: 로컬에 있는 도커 이미지를 확인합니다.
      docker images
    
  • rmi: 도커 이미지를 삭제합니다.
      docker rmi <이미지명 or 이미지id >
    
  • image tag: 도커 이미지의 이름과 태그를 변경합니다.
      docker image tag <기존 이미지명>:<기존 태그명> <새 이미지명>:<새 태그명>
    

Categories:

Updated:

Leave a comment